package model
import (
	"gorm.io/gorm"
	"time"
)

// SystemLog 系统日志表
type SystemLog struct {
	ID        uint      `json:"id" gorm:"primaryKey"`
	Level     string    `json:"level" gorm:"type:varchar(10)"` // 日志级别：info, warning, error, debug
	Module    string    `json:"module"`                        // 模块名称：system, cabinet, user, payment等
	Action    string    `json:"action"`                        // 操作类型
	Content   string    `json:"content"`                       // 日志内容
	IP        string    `json:"ip"`                            // 操作IP
	UserAgent string    `json:"user_agent"`                    // 用户代理
	CreatedAt time.Time `json:"created_at"`
}

// OperationLog 操作日志表
type OperationLog struct {
	ID          uint      `json:"id" gorm:"primaryKey"`
	UserID      uint      `json:"user_id"`      // 操作用户ID
	PhoneNumber string    `json:"phone_number"` // 用户手机号
	Action      string    `json:"action"`       // 操作类型：store-存物，pickup-取物，maintenance-维护等
	Target      string    `json:"target"`       // 操作对象：cabinet-柜子，record-记录等
	TargetID    uint      `json:"target_id"`    // 操作对象ID
	Detail      string    `json:"detail"`       // 操作详情
	IP          string    `json:"ip"`           // 操作IP
	UserAgent   string    `json:"user_agent"`   // 用户代理
	CreatedAt   time.Time `json:"created_at"`
}

// ErrorLog 错误日志表
type ErrorLog struct {
	ID        uint      `json:"id" gorm:"primaryKey"`
	Level     string    `json:"level" gorm:"type:varchar(10)"` // 错误级别：critical, error, warning
	Module    string    `json:"module"`                        // 错误模块
	Type      string    `json:"type"`                          // 错误类型：hardware-硬件错误，network-网络错误，system-系统错误，business-业务错误
	Message   string    `json:"message"`                       // 错误信息
	Stack     string    `json:"stack"`                         // 错误堆栈
	Context   string    `json:"context"`                       // 错误上下文
	IP        string    `json:"ip"`                            // 错误发生IP
	UserAgent string    `json:"user_agent"`                    // 用户代理
	CreatedAt time.Time `json:"created_at"`
}

// AccessLog 访问日志表
type AccessLog struct {
	ID          uint      `json:"id" gorm:"primaryKey"`
	UserID      uint      `json:"user_id"`      // 用户ID
	PhoneNumber string    `json:"phone_number"` // 用户手机号
	Method      string    `json:"method"`       // 请求方法
	Path        string    `json:"path"`         // 请求路径
	Query       string    `json:"query"`        // 查询参数
	Body        string    `json:"body"`         // 请求体
	Status      int       `json:"status"`       // 响应状态码
	Duration    int64     `json:"duration"`     // 处理时长(ms)
	IP          string    `json:"ip"`           // 访问IP
	UserAgent   string    `json:"user_agent"`   // 用户代理
	CreatedAt   time.Time `json:"created_at"`
}

// SecurityLog 安全日志表
type SecurityLog struct {
	gorm.DB
	Type        string `json:"type"`         // 安全事件类型：login-登录，logout-登出，auth-认证，permission-权限等
	Action      string `json:"action"`       // 具体动作
	UserID      uint   `json:"user_id"`      // 用户ID
	PhoneNumber string `json:"phone_number"` // 用户手机号
	Detail      string `json:"detail"`       // 详细信息
	IP          string `json:"ip"`           // 操作IP
	UserAgent   string `json:"user_agent"`   // 用户代理
}

// PerformanceLog 性能日志表
type PerformanceLog struct {
	gorm.DB
	Module    string  `json:"module"`    // 模块名称
	Operation string  `json:"operation"` // 操作名称
	Duration  int64   `json:"duration"`  // 执行时长(ms)
	Memory    int64   `json:"memory"`    // 内存使用(MB)
	CPU       float64 `json:"cpu"`       // CPU使用率
	Detail    string  `json:"detail"`    // 详细信息
}
